﻿#pragma once
#include <time.h>
#include <Windows.h>
#include "Stack.h"

//插入排序 N^2
void InsertSort(int* a, int n);

//堆排序 N*logN
void HeapSort(int* a, int n);

//冒泡排序 N^2
void BubbleSort(int* a, int n);

//希尔排序 N^1.3
void ShellSort(int* a, int n);

//选择排序 N^2
void SelectSort(int* a, int n);//优化版，同时选择大小
void SelectSort1(int* a, int n);//只选择小

//快速排序 N*logN
void QuickSort(int* a, int begin, int end);//hoare版本
void QuickSort1(int* a, int begin, int end);//挖坑法版本
void QuickSort2(int* a, int begin, int end);//双指针版本
void QuickSortByThree_way(int* a, int begin, int end);//三路划分
void QuickSortNonR(int* a, int begin, int end);//非递归版本

//归并排序 N*logN
void MergeSort(int* a, int begin, int end);//递归版本
void MergeSortNonR(int* a, int begin, int end);//非递归版本

//计数排序
void CountSort(int* a, int n);